package com.youngjun.user.service;

import com.youngjun.common.mybatis.service.support.BaseService;
import com.youngjun.user.mapper.UserMapper;
import com.youngjun.user.pojo.domain.User;
import com.youngjun.user.pojo.dto.UserDTO;
import com.youngjun.user.pojo.dto.query.UserQueryDTO;
import com.youngjun.user.pojo.vo.UserVO;

import java.util.List;

/**
 * @author youngjun
 */
public interface UserService extends BaseService<User,UserMapper> {

    /**
     * 根据id查询用户
     * @return UserVO
     */
    UserVO queryById(Long id);

    /**
     * 查询用户列表
     * @param dto 查询参数
     * @return List<UserVO>
     */
    List<UserVO> queryList(UserQueryDTO dto);

    /**
     * 创建用户信息
     * @param dto 用户信息
     * @return UserVO
     */
    UserVO create(UserDTO dto);

    /**
     * 修改用户信息
     * @param dto 用户信息
     * @return UserVO
     */
    UserVO modify(UserDTO dto);

    /**
     * 删除用户信息
     * @param id 主键
     */
    void delete(Long id);

    /**
     * 根据当前单位查询用户列表
     * @param dto 查询参数
     * @return List<UserVO>
     */
    List<UserVO> queryListByCurrentOrganization(UserQueryDTO dto);

    /**
     * 根据当前单位创建用户列表
     * @param dto 用户信息
     * @return UserVO
     */
    UserVO createByCurrentOrganization(UserDTO dto);

    /**
     * 根据当前单位修改用户列表
     * @param dto 用户信息
     * @return UserVO
     */
    UserVO modifyByCurrentOrganization(UserDTO dto);

    /**
     * 根据当前单位删除用户列表
     * @param id 主键
     */
    void deleteByCurrentOrganization(Long id);

}